package org.linlinjava.litemall.core.kdniao.dto;

import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author piao
 */
@Data
public class KdniaoCreateOrderDto {
    /**
     * 仓库标识
     * （选填）
     */
    private String warehouseID;

    /**
     * 仓库地址
     * （选填）
     */
    private String warehouseAddress;

    /**
     * 商户地址
     * （选填）
     */
    private String callBack;

    /**
     * 会员标识
     * (选填)
     */
    private String memberID;

    /**
     * 快递公司编码
     * （必填）
     */
    @NotBlank(message = "快递公司编码 不能为空")
    private String shipperCode;

    /**
     * 快递单号
     * (选填)
     */
    private String logisticCode;

    /**
     * 发货方式：0-上门揽件，1-网点自寄，默认为1
     * (选填)
     */
    private Integer isNotice;

    /**
     * 包装类型：包装类型(快运字段)默认为 0； 0- 纸 1- 纤 2- 木 3- 托膜 4- 木托 99-其他
     * (选填)
     */
    private Integer packingType;

    /**
     * 签收回单：1-需要，0-不需要,默认为0
     * （选填）
     */
    private Integer isReturnSignBill;

    /**
     * 送货方式：0-自提，1-送货上门（不含上楼）2-送货上楼。（适用于快运类型订单，物流公司可能会收取费用），默认为0()
     * （选填）
     */
    private Integer deliveryMethod;

    /**
     * 订单编号
     * (必填)
     */
    @NotBlank(message = "订单编号 不能为空")
    private String orderCode;

    /**
     * 月结编码
     * (一定条件下选填)
     */
    private String monthCode;

    /**
     * 邮费支付方式:1-现付，2-到付，3-月结，4-第三方支付
     * (必填)
     */
    @NotNull(message = "邮费支付方式 不能为空")
    private Integer payType;

    /**
     * 快递类型：1-标准快件
     * （必填）
     */
    private Integer expType = 1;

    /**
     * 寄件费（运费）
     * （选填）
     */
    private Double cost;

    /**
     * 其他费用
     * （选填）
     */
    private Double otherCost;

    /**
     * 上门取货时间段:"yyyy-MM-dd HH:mm:ss"格式化，本文中所有时间格式相同
     * （选填）
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startDate;

    /**
     * 上门取货时间段:"yyyy-MM-dd HH:mm:ss"格式化，本文中所有时间格式相同
     * （选填）
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endDate;

    /**
     * 物品总重量kg
     * (选填)
     */
    private Double weight;

    /**
     * 件数/包裹数
     * (选填)
     */
    private Integer quantity;

    /**
     * 物品总体积m3
     * （选填）
     */
    private Double volume;

    /**
     * 备注
     * (选填)
     */
    private String remark;

    @NotNull(message = "收件人信息 不能为空")
    private Receiver receiver;

    @NotNull(message = "寄件人信息 不能为空")
    private Sender sender;

    private List<AddService> addService;

    @NotNull(message = "商品信息 不能为空")
    private List<Commodity> commodity;
}

